public class 航班预订统计 {
    //一维差分的一道练习题

    public int[] corpFlightBookings(int[][] bookings, int n) {
        //因为0位置不用, 差分的最后一个元素还要预留空间
        int[] ans = new int[n + 2];
        //遍历一遍, 所有[l,f] l 放上 c, r + 1 放上 -c
        for(int i = 0;i < bookings.length;i++){
            int a = bookings[i][0];
            int b = bookings[i][1];
            int c = bookings[i][2];
            ans[a] += c;
            ans[b + 1] -= c;
        }
        //前缀和加一遍
        for(int i = 1;i < n + 2;i++){
            ans[i] += ans[i - 1];
        }
        //把答案放回原来的数组
        int[] ret = new int[n];
        for(int i = 0;i < n;i++){
            ret[i] = ans[i + 1];
        }
        return ret;
    }
}
